package org.dxy.infrastructure.entity.query;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * 物料群组视图实体（用于查询和展示）
 * @author dxy
 * @createTime 2025/9/5
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("material_group")
public class MaterialGroupViewEntity {
    
    /** 群组ID */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    
    /** 群组编码，唯一标识物料群组 */
    private String groupCode;
    
    /** 群组名称，用于显示和描述 */
    private String groupName;
    
    /** 群组描述，记录群组的用途或备注 */
    private String description;
    
    /** 群组状态，ACTIVE（启用）、INACTIVE（禁用） */
    private String status;
    
    /** 分组类型：MATERIAL_TYPE（按物料类型）、PROCESS_ATTR（按工艺属性）、BUSINESS_ATTR（按业务属性）、PRICING_METHOD（按计价方式） */
    private String groupType;
    
    /** 分组类型显示名称 */
    private String groupTypeName;
    
    /** 排序序号，用于群组显示排序 */
    private Integer sortOrder;
    
    /** 关联物料数量 */
    private Integer materialCount;
    
    /** 创建人 */
    @TableField(fill = FieldFill.INSERT)
    private String createdBy;
    
    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdTime;
    
    /** 更新人 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updatedBy;
    
    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedTime;
    
    /** 逻辑删除标识 0-未删除 1-已删除 */
    @TableLogic
    private Integer deleted;
}